<?php
// +----------------------------------------------------------------------
// | LIKE [ JUST DO IT ]
// +----------------------------------------------------------------------
// | Author: Mr.hu <huhaiyang7788@163.com>
// +----------------------------------------------------------------------
// | DESC: 
// +----------------------------------------------------------------------


namespace common\logs\mongo;





use yii\mongodb\ActiveRecord;

class Autoincrement extends ActiveRecord
{

    //用来存储主键自动增加的表名
    public static $auto_increment_table='autoincrement_ids';



    /**
     * 用来选择记录日志表名
     * return string
     * @ Mr.hu.
     */
    public static function collectionName()
    {
        return static::$auto_increment_table;
    }


    /**
     * 获取自动的字段的值
     * @param $table_name
     * @param $file_name
     * return void
     * @ Mr.hu.
     */
    public function incByTableName($table_name,$file_name,$inc=1)
    {
        $collection=$this->getCollection();
        $where=['table_name'=>$table_name];

        //这里主要是因为主键_id是不能更新的。所以过滤掉主键——id
        if($file_name==='_id'){
            $file_name='id';
        }

        //检查这个表是否已经存在，如果不存在,然后建立索引
        if($collection->find($where)->count()>0){
            $collection->update($where,['$inc'=>[$file_name=>1]],['upsert'=>true,'multi'=>true]);
            $result= $collection->findOne($where,[$file_name]);
            return $result[$file_name];
        }else{
            $collection->update($where,['$inc'=>[$file_name=>1]],['upsert'=>true,'multi'=>true]);
            //这里进行添加索引操作
            $collection->createIndex('table_name',['unique'=>true,'name'=>'table_name']);
            $result= $collection->findOne($where,[$file_name]);
            return $result[$file_name];
        }

    }

}